<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Javascript：使用JS特性判断浏览器的类型和版本</title>
</head>

<body>
<p style="color: #69F; text-align: center; font-size: 18px; font-weight: bold;">Javascript：使用JS特性判断浏览器的类型和版本</p>
<p>参考网址：<br />
<a href="http://www.cnblogs.com/rubylouvre/archive/2009/10/14/1583362.html">http://www.cnblogs.com/rubylouvre/archive/2009/10/14/1583362.html</a><a href="http://www.cnblogs.com/dwzjs/archive/2011/09/20/2182183.html"></a>：javascript判断浏览器类型与版本</p>
<p><strong>1、判断浏览器的一些简短方式：</strong></p>
<p>（1）ie678 = !-[1,]; //已经测试：结果为true有：IE6，IE7，IE8。结果为false有：FF，Chrome，Safari，Opera。尚未测试：IE9-10。备注：网上说在IE9预览版中会失效</p>
<p>（2）ie678 = !+&quot;\v1&quot;; //已经测试：结果为true有：IE6，IE7，IE8。结果为false有：FF，Chrome，Safari，Opera。尚未测试：IE9-10。</p>
<p>（3）ie678 = '\v'=='v'; //已经测试：结果为true有：IE6，IE7，IE8。结果为false有：FF，Chrome，Safari，Opera。尚未测试：IE9-10。</p>
<p>（4）ie678 = 0//@cc_on+1; //已经测试：结果为1有：IE6，IE7，IE8。结果为0有：FF，Chrome，Safari，Opera。尚未测试：IE9-10。</p>
<p>（5）ie678 = ('a~b'.split(/(~)/))[1]==&quot;b&quot;; //已经测试：结果为true有：IE6，IE7，IE8。结果为false有：FF，Chrome，Safari，Opera。尚未测试：IE9-10。</p>
<p>（6）ie678 = 0.9.toFixed(0)==&quot;0&quot;; //已经测试：结果为true有：IE6，IE7，IE8。结果为false有：FF，Chrome，Safari，Opera。尚未测试：IE9-10。</p>
<p>（7）ie8 = !!window.toStaticHTML; //已经测试：结果为true有：IE8。结果为false有：IE6，IE7，FF，Chrome，Safari，Opera。尚未测试：IE9-10。</p>
<p>（8）ie9 = !!window.msPerformance; //已经测试：结果为false有：IE6，IE7，IE8，FF，Chrome，Safari，Opera。尚未测试：IE9-10。备注：目前尚未测试IE9</p>
<p>（9）ie = !!document.recalc; //已经测试：结果为true有：IE6，IE7，IE8。结果为false有：FF，Chrome，Safari，Opera。尚未测试：IE9-10。</p>
<p>（10）ie = !!window.VBArray; //已经测试：结果为true有：IE6，IE7，IE8。结果为false有：FF，Chrome，Safari，Opera。尚未测试：IE9-10。</p>
<p>（11）ie = !!window.ActiveXObject; //已经测试：结果为true有：IE6，IE7，IE8。结果为false有：FF，Chrome，Safari，Opera。尚未测试：IE9-10。</p>
<p>（12）ie = !!window.createPopup; //已经测试：结果为true有：IE6，IE7，IE8。结果为false有：FF，Chrome，Safari，Opera。尚未测试：IE9-10。</p>
<p>（13）ie = /*@cc_on!@*/!1; //已经测试：结果为true有：IE6，IE7，IE8。结果为false有：FF，Chrome，Safari，Opera。尚未测试：IE9-10。</p>
<p>（14）ie = !!document.expando; //已经测试：结果为true有：IE6，IE7，IE8。结果为false有：FF，Chrome，Safari，Opera。尚未测试：IE9-10。备注：document.all在Opera，FF的古老版本也存在</p>
<p>（15）ie = /\w/.test('\u0130'); //已经测试：结果为true有：IE6，IE7，IE8。结果为false有：FF，Chrome，Safari，Opera。尚未测试：IE9-10。</p>
<p>（16）ie6 = !&quot;1&quot;[0]; //已经测试：结果为true有：IE6，IE7（有时true有时false，未知原因）。结果为false有：IE7，IE8，FF，Chrome，Safari，Opera。尚未测试：IE9-10。备注：利用IE6或IE5的字符串不能使用数组下标的特征，但经过本人两次在不同电脑上的测试结果发现，确实如网上所说，在IE7下有时是false，有时是true。</p>
<p>（17）ie8 = !!window.XDomainRequest; //已经测试：结果为true有：IE8。结果为false有：IE6，IE7，FF，Chrome，Safari，Opera。尚未测试：IE9-10。</p>
<p>（18）ie9 = !!(document.documentMode&amp;&amp;document.documentMode===9); //已经测试：结果为false有：IE6，IE7，IE8，FF，Chrome，Safari，Opera。尚未测试：IE9-10。备注：目前尚未测试IE9</p>
<p>（20）基于条件编译的嗅探脚本，IE会返回其JS引擎的版本号，非IE返回0：<br />
  var ieversion = eval(&quot;''+/*@cc_on&quot;+&quot;@_jscript_version@*/-0&quot;)*1;<br />
  ie9 = ieversion===5.9; //已经测试：结果为false有：IE6，IE7，IE8，FF，Chrome，Safari，Opera。尚未测试：IE9-10。备注：目前尚未测试IE9<br />
  ie8 = ieversion===5.8; //已经测试：结果为true有：IE8。结果为false有：IE6，IE7，FF，Chrome，Safari，Opera。尚未测试：IE9-10。<br />
  ie67 = ieversion===5.7; //已经测试：结果为true有：IE6，IE7。结果为false有：IE8，FF，Chrome，Safari，Opera。尚未测试：IE9-10。<br />
ie5 = ieversion===5.6; //已经测试：结果为true有：IE5.5。结果为false有：IE6，IE7，IE8，FF，Chrome，Safari，Opera。尚未测试：IE9-10。</p>
<p>（21）gecko = !!window.netscape; //已经测试：结果为true有：FF。结果为false有：IE6，IE7，IE8，Chrome，Safari，Opera。尚未测试：IE9-10。</p>
<p>（22）firefox = !!window.Components; //已经测试：结果为true有：FF。结果为false有：IE6，IE7，IE8，Chrome，Safari，Opera。尚未测试：IE9-10。备注：此方法虽目前是有效可行的，但官网已经不推荐使用，未来很快将被移除。</p>
<p>（23）firefox = !!window.updateCommands; //已经测试：结果为true有：FF。结果为false有：IE6，IE7，IE8，Chrome，Safari，Opera。尚未测试：IE9-10。</p>
<p>（24）safari = !!(navigator.vendor&amp;&amp;navigator.vendor.match(/apple/i)); //已经测试：结果为true有：Safari。结果为false有：IE6，IE7，IE8，FF，Chrome，Opera。尚未测试：IE9-10。</p>
<p>（25）safari = !!(/webkit/i.test(navigator.userAgent)&amp;&amp;!window.chrome); //已经测试：结果为true有：Safari。结果为false有：IE6，IE7，IE8，FF，Chrome，Opera。尚未测试：IE9-10。</p>
<p>（26）chrome = !!window.chrome; //已经测试：结果为true有：Chrome。结果为false有：IE6，IE7，IE8，FF，Safari，Opera。尚未测试：IE9-10。</p>
<p>（27）opera = !!window.opera; //已经测试：结果为true有：Opera。结果为false有：IE6，IE7，IE8，FF，Chrome，Safari。尚未测试：IE9-10。</p>
<p>（28）maxthon = /maxthon/i.test(navigator.userAgent); //傲游Maxthon浏览器</p>
<p>（29）is360se = /360se/i.test(navigator.userAgent); //360安全浏览器。备注：较老版本的360安全浏览器确实有效可行，但新版本加入双核功能后，此方法失效。</p>
<p>&nbsp;</p>
<p>2、<strong>判断浏览器客户端的操作系统：</strong></p>
<p>（1）PC版Windows：windows = /windows[ ]nt/i.test(navigator.userAgent); //Windows操作系统。</p>
<p>（2）PC版Linux：linux = /linux/i.test(navigator.userAgent)&amp;&amp;!/android/i.test(navigator.userAgent); //Linux操作系统。备注：手机的Android系统虽然是Linux内核，但这里不列为Linux系统。</p>
<p>（3）PC版本MAC：mac = /macintosh/i.test(ua); //MAC操作系统</p>
<p>（4）Android：android = /android/i.test(navigator.userAgent); //Android手机或平板。</p>
<p>（5）iPhone：iphone = /iphone/i.test(navigator.userAgent); //iPhone手机。</p>
<p>（6）iPhone4：iphone4 = (window.devicePixelRatio&gt;=2); //iPhone4手机。</p>
<p>（7）iPad：ipad = /ipad/i.test(navigator.userAgent); //iPad平板</p>
<p>（8）IOS：/ipad|iphone/i.test(navigator.userAgent); //IOS系统</p>
<p>&nbsp;</p>
<p><br />
</p>
</body>
</html>
